home *** CD-ROM | disk | FTP | other *** search
- 7. MDRIVE: MαDULO DE MANEJO DE DISQUETES
-
- Este módulo ha sido diseñado mediante la programación orientada
- a objetos y realiza las funciones de análisis de unidades de
- disquete, escritura, lectura y formato de pistas y cambio de
- parámetros.
-
- El objeto fundamental de este módulo es Tdrive, objeto en el
- que están todos los métodos y variables necesarios para operar
- con disquetes.
-
-
- En el objeto mencionado por una parte tenemos los datos del
- disquete y por otra los métodos de acceso al disquete, dentro de
- estos últimos tenemos :
-
- Constructor Init (Unidad:Byte);
- Inicializa el objeto y analiza el disquete
- identificado con el número de unidad lógica Unidad.
- Function Actualizar :word;
- Actualiza los datos del disquete introducido en la
- unidad lógica actual.
- Function Leesector;
- Lee un sector del disquete.
- Function Leepista;
- Lee una pista del disquete.
-
- El contenido del sector se almacena en Disco.sector y el
- contenido de la pista en Disco.pista.
- Las funciones de manejo de sectores necesitan tres parámetros,
- la cara del disquete (0 o 1), el número de pista donde esta el
- sector (40,80) y el número de sector que queremos leer o
- escribir.
- Function Grabapista;
- Graba el contenido de Disco.pista en una pista física
- del disquete actual.
- Function Verificapista;
- Verifica una pista determinada.
- Function Format;
- Da formato a una pista, antes de realizar ningún
- formato hay que definir el tipo de medio adecuado para
- el formato de la unidad por medio del método
- definemedio.
- Las funciones de pistas necesitan dos parámetros: La cara del
- disquete (0 o 1) y el número de pista (40,80).
-
- Procedure Reinicia_Unidad;
- Se encarga de reiniciar la unidad actual en caso de
- que haya ocurrido un error o al efectuar el análisis
- de un disquete.
-
-
-
-
- Function Buscar_tipo_unidad;
- Devuelve el código de la unidad actual, los códigos
- posibles son:
-
- Tipo Código
- 51/4 320/360 Kb 01h
- 51/4 1200 Kb 02h
- 31/2 720 Kb 03h
- 31/2 1440 Kb 04h
- 31/2 2880 Kb 05h
-
-
- El último de unidades de Extra densidad ( 31/2 2880 Kb
- código 05h) hay que suponerlo porque es reciente su
- implementación y puede no estar estandarizado. Todos los
- números de la tabla que finalizan con 'h' son en
- formato hexadecimal.
-
- Function Leer_arranque;
- Lee el sector de arranque del disquete y lo coloca en
- la matriz de bytes arranque para su posterior
- procesamiento por el método Actualizar.
- Destructor done;virtual;
- Reinicializa la unidad de disquete y finaliza la
- gestión de los disquetes.
-
- Function Calcula_Capacidad:byte;
- Se sirve de la función del DOS A.P.I 36h para
- averiguar parte de los parámetros lógicos del disquete
- introducido.
-
- Además de estas funciones hay dos que toman como base las
- interrupciones Int 25h e Int 26h del DOS para acceder a los
- disquetes mediante sectores lógicos en vez de acceder por medio
- de sectores físicos. Su implementación requiere ensamblador
- porque una llamada directa cuelga el ordenador, para que esto no
- ocurra se introduce después de la llamada la instrucción 'popf'
- que coloca los flags en el stack, esto es requerido para el
- correcto funcionamiento de esta función.
-
- El procedimiento de funcionamiento es el normal en estos casos,
- inicializar el disquete por medio de Init, efectuar las acciones
- necesarias y finalizar su funcionamiento con Done.